package framework.jackson;

import com.fasterxml.jackson.databind.ObjectMapper;
import spring.factoryBean.ColorEnum;

import java.io.IOException;

/**
 * 枚举序列化：
 *      Jackson 2.2及以后版本，默认使用 @JsonValue 序列化、反序列化。<p></p>
 *      也可以使用 `@JsonCreator` 指定方法自定义 反序列化逻辑
 *
 * @author ME
 */
public class JacksonEnumTest {

    public static void main(String[] args) throws IOException {
        ObjectMapper objectMapper = new ObjectMapper();
        System.out.println("Jackson 处理枚举类时，默认是根据枚举name转换。");

        Person person = new Person();
        person.setName("ljy");
        person.setGender(GenderEnum.MALE);
        person.setColorEnum(ColorEnum.RED);
        person.setAge(19);
        String str = objectMapper.writeValueAsString(person);
        System.out.println("根据 `@JsonValue` 把枚举类 序列化成 code属性：");
        System.out.println("\t" + str);

        System.out.println("\t根据 `@JsonCreator` 把 code值 反序列化为 枚举类");
        Person personObj = objectMapper.readValue(str, Person.class);
        System.out.println("\t" + personObj);
    }

}
